In a typical SoC, different interfaces, for example, master interfaces and slave interfaces are interacted through buses. The buses may be point-to-point buses or shared buses. The point-to-point bus is a direct connection between two interfaces and offers highest possible performance. However, it is always not viable to accommodate all the point-to-point buses with the given product requirements.
In shared buses, bus bandwidth is shared among multiple interfaces. These are more commonly used buses compared to point-to-point buses. Allocation of the bus bandwidth to the different interfaces varies based on application requirements. Often, this is done through priority based algorithms like fixed priority, round-robin, and the like. These algorithms do bandwidth allocation at a transaction level by considering outer characteristics of the interfaces like data width, transfer size, and the like. Since, for the interfaces, the outer characteristics are not completely linked to inner characteristics, bus bandwidth allocation through priority based algorithms may not be efficient and well-organized.